package com.zhentao.payment.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhentao.payment.entity.PaymentOrder;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 支付服务接口
 */
public interface PaymentService extends IService<PaymentOrder> {
    /**
     * 创建支付订单
     *
     * @param userId      用户ID
     * @param driverId    司机ID
     * @param amount      支付金额
     * @param paymentType 支付方式：1-支付宝 2-微信
     * @return 创建的支付订单信息
     */
    PaymentOrder createPaymentOrder(Long userId, Long driverId, BigDecimal amount, Integer paymentType);

    /**
     * 处理支付回调
     *
     * @param orderNo     订单编号
     * @param tradeNo     第三方支付平台交易号
     * @param paymentType 支付方式：1-支付宝 2-微信
     */
    void handlePaymentCallback(String orderNo, String tradeNo, Integer paymentType);

    /**
     * 查询支付订单
     *
     * @param orderNo 订单编号
     * @return 支付订单信息
     */
    PaymentOrder queryPaymentOrder(String orderNo);

    /**
     * 取消支付订单
     *
     * @param orderNo 订单编号
     */
    void cancelPaymentOrder(String orderNo);

    /**
     * 分页查询支付订单列表
     *
     * @param orderNo     订单编号
     * @param status      支付状态
     * @param paymentType 支付方式
     * @param page        页码
     * @param size        每页大小
     * @return 分页结果
     */
    IPage<PaymentOrder> queryPaymentList(String orderNo, Integer status, Integer paymentType, Integer page, Integer size);

    /**
     * 生成支付宝支付二维码
     */
    Map<String, Object> generateAlipayQrCode(String orderNo, BigDecimal amount);

    /**
     * 查询支付状态
     */
    String queryPaymentStatus(String orderNo);
}
